A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices, referred to as routers, maintain routing information that describes routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming packet, the router examines information within the packet and forwards the packet in accordance with the routing information.
In order to maintain an accurate representation of the network, routers periodically exchange routing information in accordance with a defined protocol, such as the Border Gateway Protocol (BGP). Large computer networks, such as the Internet, often include many routers grouped into administrative domains called “autonomous systems.” When routers of different autonomous systems use BGP to exchange information, the protocol is referred to as External BGP (EBGP). When routers within an autonomous system use BGP to exchange routing information, the protocol is referred to as Internal BGP (IBGP). Another example protocol for exchanging routing information is the Intermediate System to Intermediate System protocol (ISIS), which is an interior gateway routing protocol for IP networks for communicating link-state information within an autonomous system. Other examples of interior routing protocols include the Open Shortest Path First (OSPF), and the Routing Information Protocol (RIP).
When two routers initially connect, they typically exchange all of their routing information. The routers send control messages to incrementally update the routing information when the network topology changes. For example, the routers may send update messages to advertise newly available routes, and to withdraw routes that are no longer available.
Conventional routers often maintain the routing information in the form of one or more routing tables or other data structures. The form and contents of the routing tables often depends on the routing algorithm implemented by the router. Furthermore, some conventional routers generate and maintain forwarding information in accordance with the routing information. The forwarding information associates network routes with specific forwarding next hops and corresponding interface ports of the router. The forwarding information may, therefore, be thought of as a subset of the information contained within routing information. The process of generating the forwarding information is generally referred to as route resolution.
Due to the size and complexity of the routing information maintained by routers within a large network, such as the Internet, a single change in network topology may require route resolution for tens of thousands, if not hundreds of thousands, of individual routes. For example, it is not uncommon for a single router at the edge of an autonomous system to represent the egress for thousands of routes originating within the system. Accordingly, a single network event, such as the failure of the edge router or a link coupled to the edge router, can force routers within the system to perform route resolution for hundreds of thousands of routes, which can consume considerable computing resources and substantially delay rerouting of packets.